package com.letian.im.service.impl;

import java.util.List;

import com.letian.common.core.domain.model.UsersVO;
import com.letian.common.utils.DateUtils;
import com.letian.im.domain.model.UserMessagesVO;
import com.letian.im.service.IImFriendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.letian.im.mapper.ImMessageMapper;
import com.letian.im.domain.ImMessage;
import com.letian.im.service.IImMessageService;

/**
 * 聊天信息Service业务层处理
 * 
 * @author bmz
 * @date 2024-01-28
 */
@Service
public class ImMessageServiceImpl implements IImMessageService 
{
    @Autowired
    private ImMessageMapper imMessageMapper;

    @Autowired
    private IImFriendService friendService;

    /**
     * 查询聊天信息
     * 
     * @param id 聊天信息主键
     * @return 聊天信息
     */
    @Override
    public ImMessage selectImMessageById(Long id)
    {
        return imMessageMapper.selectImMessageById(id);
    }

    /**
     * 查询聊天信息列表
     * 
     * @param imMessage 聊天信息
     * @return 聊天信息
     */
    @Override
    public List<ImMessage> selectImMessageList(ImMessage imMessage)
    {
        return imMessageMapper.selectImMessageList(imMessage);
    }

    @Override
    public UserMessagesVO queryMessageByFromToUserId(Long fromId, Long toId){
        UsersVO fromUsersVO = friendService.getUser(fromId);
        UsersVO toUsersVO = friendService.getUser(toId);
        UserMessagesVO userMessagesVO = new UserMessagesVO();
        List<ImMessage> imMessages = imMessageMapper.queryMessageByFromToUserId(fromId,toId);
        userMessagesVO.setMessages(imMessages);
        userMessagesVO.setFromUser(fromUsersVO);
        userMessagesVO.setToUser(toUsersVO);
        return userMessagesVO;
    }

    /**
     * 新增聊天信息
     * 
     * @param imMessage 聊天信息
     * @return 结果
     */
    @Override
    public int insertImMessage(ImMessage imMessage)
    {
        imMessage.setCreateTime(DateUtils.getNowDate());
        imMessage.setUpdateTime(DateUtils.getNowDate());
        return imMessageMapper.insertImMessage(imMessage);
    }

    /**
     * 修改聊天信息
     * 
     * @param imMessage 聊天信息
     * @return 结果
     */
    @Override
    public int updateImMessage(ImMessage imMessage)
    {
        imMessage.setUpdateTime(DateUtils.getNowDate());
        return imMessageMapper.updateImMessage(imMessage);
    }

    /**
     * 批量删除聊天信息
     * 
     * @param ids 需要删除的聊天信息主键
     * @return 结果
     */
    @Override
    public int deleteImMessageByIds(Long[] ids)
    {
        return imMessageMapper.deleteImMessageByIds(ids);
    }

    /**
     * 删除聊天信息信息
     * 
     * @param id 聊天信息主键
     * @return 结果
     */
    @Override
    public int deleteImMessageById(Long id)
    {
        return imMessageMapper.deleteImMessageById(id);
    }
}
